/*!
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 *
 * 通用公共JavaScript，注意：项目请不要修改公共CSS样式，若需要新增或调整，请在common.js中覆盖
 * @author ThinkGem
 * @version 2019-1-6
 */
if (typeof jQuery === 'undefined') {
    throw new Error("JeeSite's JavaScript requires jQuery")
}
;(function ($, window, undefined) {
    $(function () {
        if ($.fn.iCheck !== undefined) {
            $(
                'input[type=checkbox].form-control:not(.noicheck),input[type=radio].form-control:not(.noicheck)'
            ).each(function () {
                $(this)
                    .iCheck({
                        checkboxClass:
                            'icheckbox_' + ($(this).data('style') || 'minimal-grey'),
                        radioClass: 'iradio_' + ($(this).data('style') || 'minimal-grey'),
                    })
                    .on('ifChanged', function () {
                        try {
                            $(this).resetValid()
                        } catch (e) {}
                    })
            })
        }
        if ($.fn.select2 !== undefined) {
            $('select.form-control:not(.noselect2)').each(function () {
                $(this)
                    .select2({
                        minimumResultsForSearch: 10,
                        templateResult: function (result, container) {
                            var element = $(result.element),
                                parent = $(container),
                                style = element.attr('style'),
                                clazz = element.attr('class')
                            if (style && style != '') {
                                parent.attr('style', style)
                            }
                            if (clazz && clazz != '') {
                                parent.addClass(clazz)
                            }
                            return result.text
                        },
                    })
                    .on('change', function () {
                        try {
                            $(this).resetValid()
                        } catch (e) {}
                    })
            })
        }
        if (js.ie) {
            $('a').bind('focus', function () {
                if (this.blur) {
                    this.blur()
                }
            })
        }
        $(
            '#inputForm input[type=text]:not([readonly]):not([disabled]):not(.nofocus):eq(0)'
        ).focus()
        $('textarea.autoHeight').textareaAutoHieght()
        $(document).on('click', '.addTabPage', function (e) {
            var $this = $(this),
                href = $this.data('href') || $this.attr('href'),
                title = $this.data('title') || $this.attr('title') || $this.text()
            if (href && href != '' && href != 'blank') {
                js.addTabPage(
                    $this,
                    $.trim(title || js.text('tabpanel.newTabPage')),
                    href
                )
                if ($this.parent().hasClass('treeview')) {
                    top.window.isMenuClickFlag = true
                    top.window.location.hash = href.replace('#', '')
                }
                return false
            }
            return true
        })
        if (js.ie && js.ie <= 9) {
            setTimeout(function () {
                $('input[placeholder],textarea[placeholder]').placeholder()
            }, 500)
        }
        if ($('#scroll-up').length > 0) {
            var btnScrollTop = $('#scroll-up'),
                isVisible = false
            $(window)
                .on('scroll.btnScrollTop', function () {
                    var scroll = $(document).scrollTop(),
                        h = $(window).height(),
                        sh = document.body.scrollHeight
                    if (
                        scroll > parseInt(h / 4) ||
                        (scroll > 0 && sh >= h && h + scroll >= sh - 1)
                    ) {
                        if (!isVisible) {
                            btnScrollTop.addClass('display')
                            isVisible = true
                        }
                    } else {
                        if (isVisible) {
                            btnScrollTop.removeClass('display')
                            isVisible = false
                        }
                    }
                })
                .triggerHandler('scroll.btnScrollTop')
            btnScrollTop.on('click', function () {
                $('html,body').animate({ scrollTop: 0 }, 500)
                return false
            })
        }
        if (typeof FastClick != 'undefined') {
            FastClick.attach(document.body)
        }
    })
    var js = {
        log: function (msg) {
            if (typeof console !== 'undefined') {
                console.log(msg)
            }
        },
        error: function (msg) {
            if (typeof console !== 'undefined') {
                console.error(msg)
            }
        },
        encodeUrl: function (url) {
            return encodeURIComponent(url)
        },
        decodeUrl: function (url) {
            return decodeURIComponent(url)
        },
        ie: (function () {
            var agent = navigator.userAgent.toLowerCase()
            return !!window.ActiveXObject || 'ActiveXObject' in window
                ? (agent.match(/msie\s(\d+)/) || [])[1] ||
                ((agent.match(/Trident/i) && agent.match(/rv:(\d+)/)) || [])[1] ||
                false
                : false
        })(),
        val: function (jsonObj, attrName) {
            if (jsonObj === undefined) {
                return ''
            }
            if (attrName === undefined || attrName == '') {
                return typeof jsonObj === 'string' ? jsonObj : ''
            }
            var ret = jsonObj[attrName],
                prm = [],
                p,
                i
            if (ret === undefined) {
                try {
                    if (typeof attrName === 'string') {
                        prm = attrName.split('.')
                    }
                    i = prm.length
                    if (i) {
                        ret = jsonObj
                        while (ret && i--) {
                            p = prm.shift()
                            ret = ret[p]
                        }
                    }
                } catch (e) {}
            }
            if (ret === undefined) {
                return ''
            }
            return ret
        },
        hashCode: function (str, caseSensitive) {
            if (caseSensitive != true) {
                str = str.toLowerCase()
            }
            var hash = 1315423911,
                i,
                ch
            for (i = str.length - 1; i >= 0; i--) {
                ch = str.charCodeAt(i)
                hash ^= (hash << 5) + ch + (hash >> 2)
            }
            return hash & 2147483647
        },
        loadFile: function (file, callback, error) {
            callback = callback || function () {}
            error =
                error ||
                function (data) {
                    js.showMessage(data)
                }
            var files = typeof file == 'string' ? [file] : file
            var htmlDoc = document.getElementsByTagName('head')[0],
                okCounts = 0,
                fileCounts = files.length,
                i,
                loadFilePath = null
            for (i = 0; i < fileCounts; i++) {
                var includeFile = null,
                    att = null,
                    ext,
                    hash
                loadFilePath = files[i]
                hash = js.hashCode(loadFilePath)
                if (document.getElementById('loadHash_' + hash)) {
                    okCounts += 1
                    if (okCounts == fileCounts) {
                        callback()
                        return true
                    }
                    continue
                }
                att = loadFilePath.split('?')[0].split('.')
                ext = att[att.length - 1].toLowerCase()
                switch (ext) {
                    case 'css':
                        includeFile = document.createElement('link')
                        includeFile.setAttribute('rel', 'stylesheet')
                        includeFile.setAttribute('type', 'text/css')
                        includeFile.setAttribute('href', loadFilePath)
                        break
                    case 'js':
                        includeFile = document.createElement('script')
                        includeFile.setAttribute('type', 'text/javascript')
                        includeFile.setAttribute('src', loadFilePath)
                        break
                    case 'jpg':
                    case 'jpeg':
                    case 'png':
                    case 'gif':
                        includeFile = document.createElement('img')
                        includeFile.setAttribute('src', loadFilePath)
                        break
                    default:
                        error('载入的格式不支持:' + loadFilePath)
                        return false
                }
                if (typeof includeFile != 'undefined') {
                    includeFile.setAttribute('id', 'loadHash_' + hash)
                    htmlDoc.appendChild(includeFile)
                    includeFile.onreadystatechange = function () {
                        if (
                            includeFile.readyState == 'loaded' ||
                            includeFile.readyState == 'complete'
                        ) {
                            okCounts += 1
                            if (okCounts == fileCounts) {
                                callback()
                                return true
                            }
                        }
                    }
                    includeFile.onload = function () {
                        okCounts += 1
                        if (okCounts == fileCounts) {
                            callback()
                            return true
                        }
                    }
                    includeFile.onerror = function () {
                        $('#loadhash_' + hash).remove()
                        return false
                    }
                }
            }
        },
        windowOpen: function (url, name, width, height) {
            if (!(width && height)) {
                width = window.screen.width - 200
                height = window.screen.height - 150
            }
            var top = parseInt((window.screen.height - height) / 2 - 20, 10),
                left = parseInt((window.screen.width - width) / 2, 10),
                options =
                    'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes,width=' +
                    width +
                    ',height=' +
                    height +
                    ',top=' +
                    top +
                    ',left=' +
                    left
            window.open(url, name, options)
        },
        windowClose: function () {
            setTimeout(function () {
                window.opener = null
                window.open('', '_self')
                window.close()
            }, 100)
        },
        addParam: function (url, params) {
            if (params != '') {
                url += url.indexOf('?') == -1 ? '?' : '&'
                url += params
            }
            return url
        },
        getParam: function (paramName, url) {
            var reg = new RegExp('(^|&)' + paramName + '=([^&]*)(&|$)', 'i')
            if (!url || url == '') {
                url = window.location.search
            } else {
                url = url.substring(url.indexOf('?'))
            }
            var val = url.substr(1).match(reg)
            if (val != null) {
                return unescape(val[2])
            }
            return null
        },
        removeParam: function (paramName, url) {
            var reg = new RegExp('(^|&)' + paramName + '=([^&]*)(&|$)', 'i'),
                params
            if (!url || url == '') {
                params = window.location.search
            } else {
                params = url.substring(url.indexOf('?'))
            }
            if (params != '') {
                if (js.startsWith(params, '?') || js.startsWith(params, '&')) {
                    params = params.substr(1)
                }
                url = url.substring(0, url.indexOf('?') + 1) + params.replace(reg, '$1')
                if (js.endsWith(url, '?') || js.endsWith(url, '&')) {
                    return url.substring(0, url.length - 1)
                }
            }
            return url
        },
        alertObj: function (obj) {
            var ob = eval(obj)
            var index = 1,
                property = ''
            for (var p in ob) {
                property += index++ + '、' + p + ' = ' + ob[p] + '\n'
            }
            alert(property)
        },
        text: function (code, params) {
            if (code) {
                js.i18n = js.i18n || {}
                var text = js.i18n[code]
                if (!(text && text != '')) {
                    text = code
                }
                if (params) {
                    for (var i = 1; i < arguments.length; i++) {
                        var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm')
                        text = text.replace(re, arguments[i])
                    }
                }
                return text
            }
            return code
        },
        getDictLabel: function (dictListJson, value, defaultValue, inCss) {
            var result = []
            for (var i = 0; i < dictListJson.length; i++) {
                var row = dictListJson[i]
                if ((',' + value + ',').indexOf(',' + row.dictValue + ',') != -1) {
                    var str = ''
                    if (inCss && (row.cssClass || row.cssStyle)) {
                        str += '<span'
                        if (row.cssClass) {
                            str += ' class="' + row.cssClass + '"'
                        }
                        if (row.cssStyle) {
                            str += ' style="' + row.cssStyle + '"'
                        }
                        result.push(str + '>' + row.dictLabel + '</span>')
                    } else {
                        result.push(row.dictLabel)
                    }
                }
            }
            return result.length > 0 ? result.join(',') : defaultValue
        },
        loading: function (message, ignoreMessageIfExists) {
            var topJs
            try {
                top.loadingFlag = true
                topJs = top.js || parent.parent.js || parent.js
            } catch (e) {}
            if (typeof loadingFlag == 'undefined' && topJs) {
                if (typeof topJs.loading == 'function') {
                    topJs.loading(message)
                    return
                }
            }
            if (message == undefined || message == '') {
                message = js.text('loading.message')
            }
            if (message == 'none') {
                return
            }
            setTimeout(function () {
                if (!js.pageLoadingNum) {
                    js.pageLoadingNum = 0
                }
                if (!js.pageLoadingStyle) {
                    if ($('body').hasClass('loading-topline')) {
                        js.pageLoadingStyle = 2
                    } else {
                        js.pageLoadingStyle = 1
                    }
                }
                if (js.pageLoadingStyle == 1) {
                    message += '<em onclick="js.closeLoading(0, true)">×</em>'
                    if ($('#page-loading').length == 0) {
                        $('body').append(
                            '<div id="page-loading" onmouseover="$(this).find(\'em\').show()" onmouseout="$(this).find(\'em\').hide()">' +
                            message +
                            '</div>'
                        )
                    } else {
                        if (!(ignoreMessageIfExists == true)) {
                            $('#page-loading').html(message)
                        }
                    }
                } else {
                    if (js.pageLoadingStyle == 2) {
                        if ($('#page-loading-top').length == 0) {
                            $('body').append(
                                '<div id="page-loading-top" class="page-loading-top"></div>'
                            )
                            $('#page-loading-top').animate(
                                { width: '65%' },
                                2000,
                                function () {
                                    $(this).animate({ width: '85%' }, 8000)
                                }
                            )
                        }
                    }
                }
                js.pageLoadingNum++
            }, 0)
        },
        closeLoading: function (timeout, forceClose) {
            var topJs
            try {
                top.loadingFlag = true
                topJs = top.js || parent.parent.js || parent.js
            } catch (e) {}
            if (typeof loadingFlag == 'undefined' && topJs) {
                if (typeof topJs.closeLoading == 'function') {
                    topJs.closeLoading(timeout, forceClose)
                    return
                }
            }
            setTimeout(
                function () {
                    if (!js.pageLoadingNum) {
                        js.pageLoadingNum = 0
                    }
                    js.pageLoadingNum--
                    if (forceClose || js.pageLoadingNum <= 0) {
                        if (js.pageLoadingStyle == 1) {
                            $('#page-loading').remove()
                        } else {
                            if (js.pageLoadingStyle == 2) {
                                $('#page-loading-top')
                                    .stop()
                                    .animate({ width: '100%' }, 200, function () {
                                        $(this).fadeOut(300, function () {
                                            $(this).remove()
                                        })
                                    })
                            }
                        }
                        js.pageLoadingNum = 0
                    }
                },
                timeout == undefined ? 0 : timeout
            )
        },
        layer: (function () {
            try {
                if (top.layer && top.layer.window) {
                    return top.layer
                }
                if (parent.parent.layer && parent.parent.layer.window) {
                    return parent.parent.layer
                }
                if (parent.layer && parent.layer.window) {
                    return parent.layer
                }
            } catch (e) {}
            if (window.layer) {
                return layer
            }
            return null
        })(),
        showMessage: function (message, title, type, timeout) {
            var msgType,
                layerIcon,
                msg = String(message),
                msgTimeout = timeout == undefined ? 4000 : timeout
            var contains = function (str, searchs) {
                if (searchs) {
                    var ss = searchs.split(',')
                    for (var i = 0; i < ss.length; i++) {
                        if (msg.indexOf(ss[i]) >= 0) {
                            return true
                        }
                    }
                }
                return false
            }
            if (type == 'error' || contains(msg, js.text('showMessage.error'))) {
                msgType = 'error'
                layerIcon = 2
            } else {
                if (
                    type == 'warning' ||
                    contains(msg, js.text('showMessage.warning'))
                ) {
                    msgType = 'warning'
                    layerIcon = 5
                } else {
                    if (
                        type == 'success' ||
                        contains(msg, js.text('showMessage.success'))
                    ) {
                        msgType = 'success'
                        layerIcon = 1
                    } else {
                        msgType = 'info'
                        layerIcon = 6
                    }
                }
            }
            try {
                if (top.toastr) {
                    var positionClass = 'toast-bottom-right'
                    if (msg && msg.length >= 8 && msg.indexOf('posfull:') >= 0) {
                        if (timeout == undefined) {
                            msgTimeout = 0
                        }
                        positionClass = 'toast-top-full-width'
                        msg = msg.substring(8)
                        js.log(msg)
                    }
                    top.toastr.options = {
                        closeButton: true,
                        positionClass: positionClass,
                        timeOut: msgTimeout,
                    }
                    top.toastr[msgType](msg, title)
                    return
                }
            } catch (e) {}
            if (!js.layer) {
                alert(msg)
                return
            }
            if (layerIcon) {
                js.layer.msg(msg, { icon: layerIcon, time: msgTimeout })
            } else {
                js.layer.msg(msg, { time: msgTimeout })
            }
        },
        showErrorMessage: function (responseText) {
            if (responseText && responseText != '') {
                js.error(js.abbr(responseText, 500))
                if (
                    responseText.indexOf('<html ') != -1 ||
                    responseText.indexOf('<head ') != -1 ||
                    responseText.indexOf('<body ') != -1
                ) {
                    js.showMessage('未知错误，F12查看异常信息！', null, 'error')
                } else {
                    try {
                        var json = JSON.parse(responseText)
                        if (typeof json == 'object' && typeof json.message != 'undefined') {
                            js.showMessage(json.message, null, 'error')
                            return
                        }
                    } catch (e) {}
                    js.showMessage(responseText, null, 'error')
                }
            }
        },
        closeMessage: function () {
            try {
                if (top.toastr) {
                    top.toastr.clear()
                }
            } catch (e) {}
        },
        alert: function (message, options, closed) {
            if (typeof options != 'object') {
                closed = options
                options = { icon: 1 }
            }
            if (!js.layer) {
                alert(message)
                if (typeof closed == 'function') {
                    closed()
                }
                return
            }
            js.layer.alert(message, options, function (index) {
                if (typeof closed == 'function') {
                    closed(index)
                }
                js.layer.close(index)
            })
        },
        confirm: function (
            message,
            urlOrFun,
            data,
            callback,
            dataType,
            async,
            loadingMessage
        ) {
            if (typeof data == 'function') {
                loadingMessage = async
                async = dataType
                dataType = callback
                callback = data
                data = undefined
            }
            var sendAjax = function () {
                js.loading(
                    loadingMessage == undefined
                        ? js.text('loading.submitMessage')
                        : loadingMessage
                )
                $.ajax({
                    type: 'POST',
                    url: urlOrFun,
                    data: data,
                    dataType: dataType == undefined ? 'json' : dataType,
                    async: async == undefined ? true : async,
                    error: function (data) {
                        js.showErrorMessage(data.responseText)
                        js.closeLoading(0, true)
                    },
                    success: function (data) {
                        if (typeof callback == 'function') {
                            callback(data)
                        }
                        js.closeLoading()
                    },
                })
            }
            if (!js.layer) {
                if (confirm(message)) {
                    if (typeof urlOrFun == 'function') {
                        urlOrFun()
                    } else {
                        sendAjax()
                    }
                }
                return
            }
            var options = { icon: 3 }
            js.layer.confirm(message, options, function (index) {
                if (typeof urlOrFun == 'function') {
                    urlOrFun()
                } else {
                    sendAjax()
                }
                js.layer.close(index)
            })
            return false
        },
        template: function (id, data, callback) {
            var tpl = String($('#' + id).html()).replace(
                /(\/\/\<!\-\-)|(\/\/\-\->)/g,
                ''
                ),
                data = data || []
            if (typeof callback == 'function') {
                laytpl(tpl).render(data || [], function (render) {
                    callback(render)
                })
                return null
            }
            return laytpl(tpl).render(data || [])
        },
        ajaxSubmit: function (url, data, callback, dataType, async, message) {
            $('.btn').attr('disabled', true)
            if (typeof data == 'function') {
                message = async
                async = dataType
                dataType = callback
                callback = data
                data = undefined
            }
            var options = {}
            if (typeof callback == 'object') {
                options = callback
                callback = options.callback
                dataType = options.dataType
                async = options.async
                message = options.message
            }
            js.loading(
                message == undefined ? js.text('loading.submitMessage') : message
            )
            $.ajax(
                $.extend(
                    true,
                    {
                        type: 'POST',
                        url: url,
                        data: data,
                        dataType: dataType == undefined ? 'json' : dataType,
                        async: async == undefined ? true : async,
                        error: function (data) {
                            $('.btn').attr('disabled', false)
                            js.showErrorMessage(data.responseText)
                            js.closeLoading(0, true)
                        },
                        success: function (data, status, xhr) {
                            $('.btn').attr('disabled', false)
                            js.closeLoading()
                            if (typeof callback == 'function') {
                                callback(data, status, xhr)
                            } else {
                                js.log(data)
                            }
                        },
                    },
                    options
                )
            )
        },
        ajaxSubmitForm: function (
            formJqueryObj,
            callback,
            dataType,
            async,
            message
        ) {
            $('.btn').attr('disabled', true)
            var options = {}
            if (typeof callback == 'object') {
                options = callback
                callback = options.callback
                dataType = options.dataType
                async = options.async
                message = options.message
            }
            js.loading(
                message == undefined ? js.text('loading.submitMessage') : message
            )
            if (options.downloadFile === true) {
                options.iframe = true
            }
            formJqueryObj.ajaxSubmit(
                $.extend(
                    true,
                    {
                        type: 'POST',
                        xhrFields: { withCredentials: true },
                        url: formJqueryObj.attr('action'),
                        dataType: dataType == undefined ? 'json' : dataType,
                        async: async == undefined ? true : async,
                        error: function (data) {
                            $('.btn').attr('disabled', false)
                            js.showErrorMessage(data.responseText)
                            js.closeLoading(0, true)
                        },
                        success: function (data, status, xhr) {
                            $('.btn').attr('disabled', false)
                            js.closeLoading()
                            if (typeof callback == 'function') {
                                callback(data, status, xhr)
                            } else {
                                js.log(data)
                            }
                        },
                    },
                    options
                )
            )
            if (options.downloadFile === true) {
                $('.btn').attr('disabled', false)
                js.closeLoading()
            }
        },
        trim: function (str) {
            return jQuery.trim(str)
        },
        startWith: function (str, start) {
            var reg = new RegExp('^' + start)
            return reg.test(str)
        },
        startsWith: function (str, prefix) {
            if (!str || !prefix || str.length < prefix.length) {
                return false
            }
            return str.slice(0, prefix.length) === prefix
        },
        endWith: function (str, end) {
            var reg = new RegExp(end + '$')
            return reg.test(str)
        },
        endsWith: function (str, suffix) {
            if (!str || !suffix || str.length < suffix.length) {
                return false
            }
            return str.indexOf(suffix, str.length - suffix.length) !== -1
        },
        abbr: function (name, maxLength) {
            if (!maxLength) {
                maxLength = 20
            }
            if (name == null || name.length < 1) {
                return ''
            }
            var w = 0
            var s = 0
            var p = false
            var b = false
            var nameSub
            for (var i = 0; i < name.length; i++) {
                if (i > 1 && b == false) {
                    p = false
                }
                if (i > 1 && b == true) {
                    p = true
                }
                var c = name.charCodeAt(i)
                if ((c >= 1 && c <= 126) || (65376 <= c && c <= 65439)) {
                    w++
                    b = false
                } else {
                    w += 2
                    s++
                    b = true
                }
                if (w > maxLength && i <= name.length - 1) {
                    if (b == true && p == true) {
                        nameSub = name.substring(0, i - 2) + '...'
                    }
                    if (b == false && p == false) {
                        nameSub = name.substring(0, i - 3) + '...'
                    }
                    if (b == true && p == false) {
                        nameSub = name.substring(0, i - 2) + '...'
                    }
                    if (p == true) {
                        nameSub = name.substring(0, i - 2) + '...'
                    }
                    break
                }
            }
            if (w <= maxLength) {
                return name
            }
            return nameSub
        },
        formatNumber: function (num, cent, isThousand, defaultValue) {
            if (typeof num == 'undefined' || num == null || num === '') {
                return defaultValue || ''
            }
            num = String(num).replace(/\$|\,/g, '')
            if (isNaN(num)) {
                num = '0'
            }
            var sign = num == (num = Math.abs(num))
            num = Math.floor(num * Math.pow(10, cent) + 0.50000000001)
            var cents = num % Math.pow(10, cent)
            num = Math.floor(num / Math.pow(10, cent)).toString()
            cents = cents.toString()
            while (cents.length < cent) {
                cents = '0' + cents
            }
            if (isThousand) {
                for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
                    num =
                        num.substring(0, num.length - (4 * i + 3)) +
                        ',' +
                        num.substring(num.length - (4 * i + 3))
                }
            }
            if (cent > 0) {
                return (sign ? '' : '-') + num + '.' + cents
            } else {
                return (sign ? '' : '-') + num
            }
        },
        formatMoney: function (s, n) {
            if (s == undefined || s == '') {
                return '0.00'
            }
            n = n >= 0 && n <= 20 ? n : 2
            s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + ''
            var l = s.split('.')[0].split('').reverse(),
                r = s.split('.')[1],
                i,
                t = ''
            for (i = 0; i < l.length; i++) {
                t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length ? ',' : '')
            }
            return t.split('').reverse().join('') + (r ? '.' + r : '')
        },
        numberPad: function (num, n) {
            var len = num.toString().length
            while (len < n) {
                num = '0' + num
                len++
            }
            return num
        },
        formatDate: function (date, f) {
            if (date == undefined) {
                return ''
            }
            if (f == undefined) {
                f = 'yyyy-MM-dd HH:mm'
            }
            var o = {
                'M+': date.getMonth() + 1,
                'd+': date.getDate(),
                'H+': date.getHours(),
                'm+': date.getMinutes(),
                's+': date.getSeconds(),
                'q+': Math.floor((date.getMonth() + 3) / 3),
                S: date.getMilliseconds(),
            }
            if (/(y+)/.test(f)) {
                f = f.replace(
                    RegExp.$1,
                    (date.getFullYear() + '').substr(4 - RegExp.$1.length)
                )
            }
            for (var k in o) {
                if (new RegExp('(' + k + ')').test(f)) {
                    f = f.replace(
                        RegExp.$1,
                        RegExp.$1.length == 1
                            ? o[k]
                            : ('00' + o[k]).substr(('' + o[k]).length)
                    )
                }
            }
            return f
        },
        parseDate: function (date) {
            if (date == undefined) {
                return null
            }
            return new Date(date.replace(/-/g, '/'))
        },
        addDate: function (date, dadd) {
            date = date.valueOf()
            date = date + dadd * 24 * 60 * 60 * 1000
            return new Date(date)
        },
        quickSelectDate: function (type, beginDateId, endDateId) {
            var now = new Date(),
                nowYear = now.getFullYear(),
                nowMonth = now.getMonth(),
                nowDay = now.getDate(),
                nowDayOfWeek = now.getDay(),
                beginDate = $('#' + beginDateId),
                endDate = $('#' + endDateId),
                formatDate = function (date) {
                    return js.formatDate(date, 'yyyy-MM-dd')
                },
                getMonthDays = function (myMonth) {
                    var monthStartDate = new Date(nowYear, myMonth, 1)
                    var monthEndDate = new Date(nowYear, myMonth + 1, 1)
                    var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24)
                    return days
                }
            if (type == '1') {
                beginDate.val(formatDate(now))
                endDate.val(beginDate.val())
            } else {
                if (type == '2') {
                    nowDayOfWeek = nowDayOfWeek == 0 ? 6 : nowDayOfWeek - 1
                    var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)
                    var weekEndDate = new Date(
                        nowYear,
                        nowMonth,
                        nowDay + (6 - nowDayOfWeek)
                    )
                    beginDate.val(formatDate(weekStartDate))
                    endDate.val(formatDate(weekEndDate))
                } else {
                    if (type == '3') {
                        var monthStartDate = new Date(nowYear, nowMonth, 1)
                        var monthEndDate = new Date(
                            nowYear,
                            nowMonth,
                            getMonthDays(nowMonth)
                        )
                        beginDate.val(formatDate(monthStartDate))
                        endDate.val(formatDate(monthEndDate))
                    } else {
                        if (type == '4') {
                            var quarterStartMonth = 0
                            if (nowMonth < 3) {
                                quarterStartMonth = 0
                            }
                            if (2 < nowMonth && nowMonth < 6) {
                                quarterStartMonth = 3
                            }
                            if (5 < nowMonth && nowMonth < 9) {
                                quarterStartMonth = 6
                            }
                            if (nowMonth > 8) {
                                quarterStartMonth = 9
                            }
                            var quarterEndMonth = quarterStartMonth + 2
                            var quarterStartDate = new Date(nowYear, quarterStartMonth, 1)
                            var quarterEndDate = new Date(
                                nowYear,
                                quarterEndMonth,
                                getMonthDays(quarterEndMonth)
                            )
                            beginDate.val(formatDate(quarterStartDate))
                            endDate.val(formatDate(quarterEndDate))
                        } else {
                            if (type == '5') {
                                var lastMonthDate = new Date()
                                lastMonthDate.setDate(1)
                                lastMonthDate.setMonth(lastMonthDate.getMonth() - 1)
                                var lastYear = lastMonthDate.getYear()
                                var lastMonth = lastMonthDate.getMonth()
                                var lastMonthStartDate = new Date(nowYear, lastMonth, 1)
                                var lastMonthEndDate = new Date(
                                    nowYear,
                                    lastMonth,
                                    getMonthDays(lastMonth)
                                )
                                beginDate.val(formatDate(lastMonthStartDate))
                                endDate.val(formatDate(lastMonthEndDate))
                            }
                        }
                    }
                }
            }
            beginDate.change()
            endDate.change()
        },
        cookie: function (name, value, options) {
            if (typeof value != 'undefined') {
                options = options || {}
                if (value === null) {
                    value = ''
                    options.expires = -1
                }
                var expires = ''
                if (
                    options.expires &&
                    (typeof options.expires == 'number' || options.expires.toUTCString)
                ) {
                    var date
                    if (typeof options.expires == 'number') {
                        date = new Date()
                        date.setTime(date.getTime() + options.expires * 24 * 60 * 60 * 1000)
                    } else {
                        date = options.expires
                    }
                    expires = '; expires=' + date.toUTCString()
                }
                var path =
                    '; path=' +
                    (options.path ? options.path : window.ctxPath ? window.ctxPath : '/')
                var domain = options.domain ? '; domain=' + options.domain : ''
                var secure = options.secure ? '; secure' : ''
                document.cookie = [
                    name,
                    '=',
                    encodeURIComponent(value),
                    expires,
                    path,
                    domain,
                    secure,
                ].join('')
            } else {
                var cookieValue = null
                if (document.cookie && document.cookie != '') {
                    var cookies = document.cookie.split(';')
                    for (var i = 0; i < cookies.length; i++) {
                        var cookie = jQuery.trim(cookies[i])
                        if (cookie.substring(0, name.length + 1) == name + '=') {
                            cookieValue = decodeURIComponent(
                                cookie.substring(name.length + 1)
                            )
                            break
                        }
                    }
                }
                return cookieValue
            }
        },
        tabPage: (function () {
            if (window.tabPage) {
                return tabPage
            }
            try {
                if (parent.tabPage) {
                    return parent.tabPage
                }
                if (parent.parent.tabPage) {
                    return parent.parent.tabPage
                }
                if (top.tabPage) {
                    return top.tabPage
                }
            } catch (e) {}
            return null
        })(),
        initTabPage: function (id, options) {
            if (js.cookie('tabPageModel') == 'true') {
                options.maxLength = 1
            }
            var tabPage = window.tabPage
            return tabPage.initTabPage(id, options)
        },
        addTabPage: function ($this, title, url, closeable, refresh) {
            top.prevWindow = window
            var tabPage = js.tabPage
            if (
                !tabPage ||
                typeof tabPage.addTabPage != 'function' ||
                (js.cookie('formLayerModel') == 'true' &&
                    $this &&
                    $this.data('layer') != false &&
                    ($this.hasClass('btnTool') || $this.hasClass('btnList'))) ||
                ($this && $this.data('layer') == true)
            ) {
                if (js.layer) {
                    var layerWidth, layerHeight, layerLeft, layerTop
                    if ($this) {
                        layerWidth = $this.data('layerWidth')
                        layerHeight = $this.data('layerHeight')
                        layerLeft = $this.data('layerLeft')
                        layerTop = $this.data('layerTop')
                    }
                    if (layerWidth == null || layerWidth == '') {
                        layerWidth = $(top.window).width()
                        if (layerLeft != null && layerLeft != '') {
                            layerWidth -= parseInt(layerLeft) * 2
                        } else {
                            layerWidth -= 100 * 2
                        }
                    }
                    if (layerHeight == null || layerHeight == '') {
                        layerHeight = $(top.window).height()
                        if (layerTop != null && layerTop != '') {
                            layerHeight -= parseInt(layerTop) * 2
                        } else {
                            layerHeight -= 50 * 2
                        }
                    }
                    js.layer.open({
                        type: 2,
                        maxmin: true,
                        shadeClose: false,
                        title: title,
                        area: [layerWidth + 'px', layerHeight + 'px'],
                        content: url,
                        contentFormData: { __layer: true },
                        success: function (layero, index) {
                            if (
                                $(js.layer.window).width() < layerWidth ||
                                $(js.layer.window).height() < layerHeight
                            ) {
                                js.layer.full(index)
                            }
                        },
                    })
                } else {
                    js.windowOpen(url, title, 'auto', 'auto')
                }
                return
            }
            return tabPage.addTabPage($this, title, url, closeable, refresh)
        },
        getCurrentTabPage: function (currentTabCallback) {
            var tabPage = js.tabPage
            if (!tabPage || typeof tabPage.getCurrentTabPage != 'function') {
                return
            }
            tabPage.getCurrentTabPage(currentTabCallback)
        },
        getPrevTabPage: function (preTabCallback, isCloseCurrentTab) {
            var tabPage = js.tabPage
            if (!tabPage || typeof tabPage.getPrevTabPage != 'function') {
                return
            }
            tabPage.getPrevTabPage(preTabCallback, isCloseCurrentTab)
        },
        closeCurrentTabPage: function (preTabCallback) {
            var tabPage = js.tabPage
            if (
                !tabPage ||
                typeof tabPage.closeCurrentTabPage != 'function' ||
                window.name.indexOf('layui-layer') != -1
            ) {
                var layerIndex
                if (js.layer) {
                    layerIndex = js.layer.getFrameIndex(window.name)
                }
                if (layerIndex) {
                    js.layer.close(layerIndex)
                } else {
                    js.windowClose()
                }
                if (typeof preTabCallback == 'function') {
                    try {
                        preTabCallback(top.prevWindow)
                    } catch (e) {
                        js.error(e)
                    }
                }
                return
            }
            tabPage.closeCurrentTabPage(preTabCallback)
        },
    }
    window.js = js
    window.log = js.log
    window.error = js.error
    window.lang = window.lang || 'zh_CN'
    window.text = js.text
})(window.jQuery, window)
;+(function (d) {
    var b = 'lte.boxwidget'
    var g = {
        animationSpeed: 500,
        collapseTrigger: '[data-widget="collapse"]',
        removeTrigger: '[data-widget="remove"]',
        collapseIcon: 'fa-minus',
        expandIcon: 'fa-plus',
        removeIcon: 'fa-times',
    }
    var a = {
        data: '.box',
        collapsed: '.collapsed-box',
        body: '.box-body',
        footer: '.box-footer',
        tools: '.box-tools',
    }
    var i = { collapsed: 'collapsed-box' }
    var j = {
        collapsed: 'collapsed.boxwidget',
        expanded: 'expanded.boxwidget',
        removed: 'removed.boxwidget',
    }
    var f = function (l, k) {
        this.element = l
        this.options = k
        this._setUpListeners()
    }
    f.prototype.toggle = function () {
        var k = !d(this.element).is(a.collapsed)
        if (k) {
            this.collapse()
        } else {
            this.expand()
        }
    }
    f.prototype.expand = function () {
        var m = d.Event(j.expanded)
        var l = this.options.collapseIcon
        var k = this.options.expandIcon
        d(this.element).removeClass(i.collapsed)
        d(this.element)
            .find(a.tools)
            .find('.' + k)
            .removeClass(k)
            .addClass(l)
        d(this.element)
            .find(a.body + ', ' + a.footer)
            .slideDown(
                this.options.animationSpeed,
                function () {
                    d(this.element).trigger(m)
                }.bind(this)
            )
    }
    f.prototype.collapse = function () {
        var l = d.Event(j.collapsed)
        var m = this.options.collapseIcon
        var k = this.options.expandIcon
        d(this.element)
            .find(a.tools)
            .find('.' + m)
            .removeClass(m)
            .addClass(k)
        d(this.element)
            .find(a.body + ', ' + a.footer)
            .slideUp(
                this.options.animationSpeed,
                function () {
                    d(this.element).addClass(i.collapsed)
                    d(this.element).trigger(l)
                }.bind(this)
            )
    }
    f.prototype.remove = function () {
        var k = d.Event(j.removed)
        d(this.element).slideUp(
            this.options.animationSpeed,
            function () {
                d(this.element).trigger(k)
                d(this.element).remove()
            }.bind(this)
        )
    }
    f.prototype._setUpListeners = function () {
        var k = this
        d(this.element).on('click', this.options.collapseTrigger, function (l) {
            if (l) {
                l.preventDefault()
            }
            k.toggle()
        })
        d(this.element).on('click', this.options.removeTrigger, function (l) {
            if (l) {
                l.preventDefault()
            }
            k.remove()
        })
        d(this.options.collapseTrigger).css({ cursor: 'pointer' })
        d(this.options.removeTrigger).css({ cursor: 'pointer' })
    }
    function h(k) {
        return this.each(function () {
            var n = d(this)
            var m = n.data(b)
            if (!m) {
                var l = d.extend({}, g, n.data(), typeof k == 'object' && k)
                n.data(b, (m = new f(n, l)))
            }
            if (typeof k == 'string') {
                if (typeof m[k] == 'undefined') {
                    throw new Error('No method named ' + k)
                }
                m[k]()
            }
        })
    }
    var c = d.fn.boxWidget
    d.fn.boxWidget = h
    d.fn.boxWidget.Constructor = f
    d.fn.boxWidget.noConflict = function () {
        d.fn.boxWidget = c
        return this
    }
    d(function () {
        d(a.data).each(function () {
            h.call(d(this))
        })
        d('.box-child').boxWidget({
            collapseTrigger: '[data-widget="collapse-child"]',
            removeTrigger: '[data-widget="remove-child"]',
        })
    })
})(jQuery)
!(function (a) {
    a.fn.extend({
        placeholder: function (b) {
            b = a.extend(
                {
                    placeholderColor: '#ACA899',
                    isUseSpan: true,
                    onInput: true,
                    noFixClass: 'placeholder-no-fix',
                },
                b
            )
            a(this).each(function () {
                var h = this
                var c = 'placeholder' in document.createElement('input')
                if (!c) {
                    if (a(h).hasClass(b.noFixClass)) {
                        return
                    }
                    var i = a(h).attr('placeholder')
                    var d = a(h).css('color')
                    if (b.isUseSpan == false) {
                        a(h)
                            .focus(function () {
                                var n = new RegExp('^' + i + '$|^$')
                                n.test(a(h).val()) && a(h).val('').css('color', d)
                            })
                            .blur(function () {
                                if (a(h).val() == i) {
                                    a(h).css('color', d)
                                } else {
                                    if (a(h).val().length == 0) {
                                        a(h).val(i).css('color', b.placeholderColor)
                                    }
                                }
                            })
                            .trigger('blur')
                    } else {
                        var f = ''
                        if (a(h).parent().hasClass('input-group')) {
                            f = 'left:' + a(h).position().left + 'px;'
                        }
                        var k = a(h).width() == 0 ? 150 : a(h).width()
                        var l = a(h).hasClass('input-sm')
                            ? a(h).height()
                            : a(h).outerHeight()
                        var m = a(
                            '<span class="wrap-placeholder" style="position:absolute;display:inline-block;overflow:hidden;z-index:1000;color:' +
                            b.placeholderColor +
                            '; width:' +
                            k +
                            'px; height:' +
                            l +
                            'px;' +
                            f +
                            '">' +
                            i +
                            '</span>'
                        )
                        m.css({
                            'margin-left': a(h).css('margin-left'),
                            'margin-top': a(h).css('margin-top'),
                            'font-size': a(h).css('font-size'),
                            'font-family': a(h).css('font-family'),
                            'font-weight': a(h).css('font-weight'),
                            'line-height':
                                h.nodeName.toLowerCase() == 'textarea'
                                    ? a(h).css('line-weight')
                                    : l + 'px',
                            'padding-left': parseInt(a(h).css('padding-left')) + 2 + 'px',
                            'padding-top':
                                h.nodeName.toLowerCase() == 'textarea'
                                    ? parseInt(a(h).css('padding-top')) + 2
                                    : 0,
                        })
                        var g = a(h).prev()
                        if (g.hasClass('wrap-placeholder')) {
                            g.remove()
                        }
                        a(h).before(
                            m.click(function () {
                                a(h).trigger('focus')
                            })
                        )
                        a(h).val().length != 0 && m.hide()
                        if (b.onInput) {
                            var j = typeof h.oninput == 'object' ? 'input' : 'propertychange'
                            a(h).bind(j, function () {
                                m[0].style.display =
                                    a(h).val().length != 0 ? 'none' : 'inline-block'
                            })
                        } else {
                            a(h)
                                .focus(function () {
                                    m.hide()
                                })
                                .blur(function () {
                                    ;/^$/.test(a(h).val()) && m.show()
                                })
                        }
                    }
                }
            })
            return this
        },
    })
})(jQuery)
;(function (a) {
    a.fn.textareaAutoHieght = function (b) {
        var d = { maxHeight: null, minHeight: a(this).attr('rows') * 18 }
        var c = a.extend({}, d, b)
        return a(this).each(function () {
            a(this)
                .bind('paste cut keydown keyup focus blur', function () {
                    var f,
                        g = this.style
                    this.style.height = c.minHeight + 'px'
                    if (this.scrollHeight > c.minHeight) {
                        if (c.maxHeight && this.scrollHeight > c.maxHeight) {
                            f = c.maxHeight
                            g.overflowY = 'scroll'
                        } else {
                            f = this.scrollHeight
                            g.overflowY = 'hidden'
                        }
                        g.height = f + 'px'
                    }
                })
                .trigger('blur')
        })
    }
})(jQuery)
;(function (a) {
    a.fn.iframeWindow = function () {
        var b = a(this).find('iframe')
        if (b.length > 0) {
            return b[0].contentWindow
        }
        return null
    }
})(jQuery)
;(function (W) {
    function B(k, h, n) {
        var p = k[0],
            m = /er/.test(n) ? T : /bl/.test(n) ? O : U,
            l =
                n == j
                    ? {
                        checked: p[U],
                        disabled: p[O],
                        indeterminate: 'true' == k.attr(T) || 'false' == k.attr(o),
                    }
                    : p[m]
        if (/^(ch|di|in)/.test(n) && !l) {
            P(k, m)
        } else {
            if (/^(un|en|de)/.test(n) && l) {
                N(k, m)
            } else {
                if (n == j) {
                    for (m in l) {
                        l[m] ? P(k, m, !0) : N(k, m, !0)
                    }
                } else {
                    if (!h || 'toggle' == n) {
                        if (!h) {
                            k[R]('ifClicked')
                        }
                        l ? p[S] !== C && N(k, m) : P(k, m)
                    }
                }
            }
        }
    }
    function P(y, x, u) {
        var v = y[0],
            t = y.parent(),
            q = x == U,
            n = x == T,
            m = x == O,
            w = n ? o : q ? K : 'enabled',
            l = V(y, w + i(v[S])),
            s = V(y, x + i(v[S]))
        if (!0 !== v[x]) {
            if (!u && x == U && v[S] == C && v.name) {
                var k = y.closest('form'),
                    h = 'input[name="' + v.name + '"]',
                    h = k.length ? k.find(h) : W(h)
                h.each(function () {
                    this !== v && W(this).data(Q) && N(W(this), x)
                })
            }
            n
                ? ((v[x] = !0), v[U] && N(y, U, 'force'))
                : (u || (v[x] = !0), q && v[T] && N(y, T, !1))
            b(y, q, x, u)
        }
        v[O] && V(y, f, !0) && t.find('.' + g).css(f, 'default')
        t[A](s || V(y, x) || '')
        m
            ? t.attr('aria-disabled', 'true')
            : t.attr('aria-checked', n ? 'mixed' : 'true')
        t[c](l || V(y, w) || '')
    }
    function N(y, x, v) {
        var w = y[0],
            s = y.parent(),
            n = x == U,
            m = x == T,
            k = x == O,
            l = m ? o : n ? K : 'enabled',
            D = V(y, l + i(w[S])),
            z = V(y, x + i(w[S]))
        if (!1 !== w[x]) {
            if (m || !v || 'force' == v) {
                w[x] = !1
            }
            b(y, n, l, v)
        }
        !w[O] && V(y, f, !0) && s.find('.' + g).css(f, 'pointer')
        s[c](z || V(y, x) || '')
        k ? s.attr('aria-disabled', 'false') : s.attr('aria-checked', 'false')
        s[A](D || V(y, l) || '')
    }
    function a(k, h) {
        if (k.data(Q)) {
            k.parent().html(k.attr('style', k.data(Q).s || ''))
            if (h) {
                k[R](h)
            }
            k.off('.i').unwrap()
            W(r + '[for="' + k[0].id + '"]')
                .add(k.closest(r))
                .off('.i')
        }
    }
    function V(k, h, l) {
        if (k.data(Q)) {
            return k.data(Q).o[h + (l ? '' : 'Class')]
        }
    }
    function i(h) {
        return h.charAt(0).toUpperCase() + h.slice(1)
    }
    function b(k, h, l, m) {
        if (!m) {
            if (h) {
                k[R]('ifToggled')
            }
            k[R]('ifChanged')[R]('if' + i(l))
        }
    }
    var Q = 'iCheck',
        g = Q + '-helper',
        C = 'radio',
        U = 'checked',
        K = 'un' + U,
        O = 'disabled',
        o = 'determinate',
        T = 'in' + o,
        j = 'update',
        S = 'type',
        A = 'addClass',
        c = 'removeClass',
        R = 'trigger',
        r = 'label',
        f = 'cursor',
        d = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(
            navigator.userAgent
        )
    W.fn[Q] = function (D, v) {
        var s = 'input[type="checkbox"], input[type="' + C + '"]',
            t = W(),
            q = function (k) {
                k.each(function () {
                    var w = W(this)
                    t = w.is(s) ? t.add(w) : t.add(w.find(s))
                })
            }
        if (
            /^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(
                D
            )
        ) {
            return (
                (D = D.toLowerCase()),
                    q(this),
                    t.each(function () {
                        var k = W(this)
                        'destroy' == D ? a(k, 'ifDestroyed') : B(k, !0, D)
                        W.isFunction(v) && v()
                    })
            )
        }
        if ('object' != typeof D && D) {
            return this
        }
        var p = W.extend(
            {
                checkedClass: U,
                disabledClass: O,
                indeterminateClass: T,
                checkboxClass: 'icheckbox_minimal-grey',
                radioClass: 'iradio_minimal-grey',
                labelHover: !0,
                aria: !1,
            },
            D
            ),
            n = p.handle,
            m = p.hoverClass || 'hover',
            z = p.focusClass || 'focus',
            E = p.activeClass || 'active',
            u = !!p.labelHover,
            l = p.labelHoverClass || 'hover',
            h = ('' + p.increaseArea).replace('%', '') | 0
        if ('checkbox' == n || n == C) {
            s = 'input[type="' + n + '"]'
        }
        ;-50 > h && (h = -50)
        q(this)
        return t.each(function () {
            var L = W(this)
            a(L)
            var I = this,
                J = I.id,
                G = -h + '%',
                H = 100 + 2 * h + '%',
                H = {
                    position: 'absolute',
                    top: G,
                    left: G,
                    display: 'block',
                    width: H,
                    height: H,
                    margin: 0,
                    padding: 0,
                    background: '#fff',
                    border: 0,
                    opacity: 0,
                },
                G = d
                    ? { position: 'absolute', visibility: 'hidden' }
                    : h
                        ? H
                        : { position: 'absolute', opacity: 0 },
                y =
                    'checkbox' == I[S]
                        ? p.checkboxClass || 'icheckbox'
                        : p.radioClass || 'i' + C,
                x = W(r + '[for="' + J + '"]').add(L.closest(r)),
                w = !!p.aria,
                M = Q + '-' + Math.random().toString(36).replace('0.', ''),
                F = '<div class="' + y + '" ' + (w ? 'role="' + I[S] + '" ' : '')
            x.length &&
            w &&
            x.each(function () {
                F += 'aria-labelledby="'
                this.id ? (F += this.id) : ((this.id = M), (F += M))
                F += '"'
            })
            F = L.wrap(F + '/>')
                [R]('ifCreated')
                .parent()
                .append(p.insert)
            H = W('<ins class="' + g + '"/>')
                .css(H)
                .appendTo(F)
            L.data(Q, { o: p, s: L.attr('style') }).css(G)
            p.inheritClass && F[A](I.className || '')
            p.inheritID && J && F.attr('id', Q + '-' + J)
            'static' == F.css('position') && F.css('position', 'relative')
            B(L, !0, j)
            if (x.length) {
                x.on(
                    'click.i mouseover.i mouseout.i touchbegin.i touchend.i',
                    function (k) {
                        var Y = k[S],
                            X = W(this)
                        if (!I[O]) {
                            if ('click' == Y) {
                                if (W(k.target).is('a')) {
                                    return
                                }
                                B(L, !1, !0)
                            } else {
                                u && (/ut|nd/.test(Y) ? (F[c](m), X[c](l)) : (F[A](m), X[A](l)))
                            }
                            if (d) {
                                k.stopPropagation()
                            } else {
                                return !1
                            }
                        }
                    }
                )
            }
            L.on('click.i focus.i blur.i keyup.i keydown.i keypress.i', function (k) {
                var X = k[S]
                k = k.keyCode
                if ('click' == X) {
                    return !1
                }
                if ('keydown' == X && 32 == k) {
                    return (I[S] == C && I[U]) || (I[U] ? N(L, U) : P(L, U)), !1
                }
                if ('keyup' == X && I[S] == C) {
                    !I[U] && P(L, U)
                } else {
                    if (/us|ur/.test(X)) {
                        F['blur' == X ? c : A](z)
                    }
                }
            })
            H.on(
                'click mousedown mouseup mouseover mouseout touchbegin.i touchend.i',
                function (k) {
                    var Y = k[S],
                        X = /wn|up/.test(Y) ? E : m
                    if (!I[O]) {
                        if ('click' == Y) {
                            B(L, !1, !0)
                        } else {
                            if (/wn|er|in/.test(Y)) {
                                F[A](X)
                            } else {
                                F[c](X + ' ' + E)
                            }
                            if (x.length && u && X == m) {
                                x[/ut|nd/.test(Y) ? c : A](l)
                            }
                        }
                        if (d) {
                            k.stopPropagation()
                        } else {
                            return !1
                        }
                    }
                }
            )
        })
    }
})(window.jQuery || window.Zepto)
;(function (f, d, a) {
    var b, g, c
    c = 'resizeEnd'
    g = { delay: 150 }
    b = function (i, h, j) {
        if (typeof h === 'function') {
            j = h
            h = {}
        }
        j = j || null
        this.element = i
        this.settings = f.extend({}, g, h)
        this._defaults = g
        this._name = c
        this._timeout = false
        this._callback = j
        return this.init()
    }
    b.prototype = {
        init: function () {
            var h, i
            i = this
            h = f(this.element)
            return h.on('resize', function () {
                return i.initResize()
            })
        },
        getUTCDate: function (i) {
            var h
            i = i || new Date()
            h = Date.UTC(
                i.getUTCFullYear(),
                i.getUTCMonth(),
                i.getUTCDate(),
                i.getUTCHours(),
                i.getUTCMinutes(),
                i.getUTCSeconds(),
                i.getUTCMilliseconds()
            )
            return h
        },
        initResize: function () {
            var h
            h = this
            h.controlTime = h.getUTCDate()
            if (h._timeout === false) {
                h._timeout = true
                return setTimeout(function () {
                    return h.runCallback(h)
                }, h.settings.delay)
            }
        },
        runCallback: function (i) {
            var h
            h = i.getUTCDate()
            if (h - i.controlTime < i.settings.delay) {
                return setTimeout(function () {
                    return i.runCallback(i)
                }, i.settings.delay)
            } else {
                i._timeout = false
                return i._callback()
            }
        },
    }
    return (f.fn[c] = function (h, i) {
        return this.each(function () {
            if (!f.data(this, 'plugin_' + c)) {
                return f.data(this, 'plugin_' + c, new b(this, h, i))
            }
        })
    })
})(jQuery, window, document)
!(function (a) {
    'function' == typeof define && define.amd
        ? define(['jquery'], a)
        : a('undefined' != typeof jQuery ? jQuery : window.Zepto)
})(function (e) {
    function t(t) {
        var r = t.data
        t.isDefaultPrevented() || (t.preventDefault(), e(t.target).ajaxSubmit(r))
    }
    function r(t) {
        var r = t.target,
            a = e(r)
        if (!a.is('[type=submit],[type=image]')) {
            var n = a.closest('[type=submit]')
            if (0 === n.length) {
                return
            }
            r = n[0]
        }
        var i = this
        if (((i.clk = r), 'image' == r.type)) {
            if (void 0 !== t.offsetX) {
                ;(i.clk_x = t.offsetX), (i.clk_y = t.offsetY)
            } else {
                if ('function' == typeof e.fn.offset) {
                    var o = a.offset()
                    ;(i.clk_x = t.pageX - o.left), (i.clk_y = t.pageY - o.top)
                } else {
                    ;(i.clk_x = t.pageX - r.offsetLeft), (i.clk_y = t.pageY - r.offsetTop)
                }
            }
        }
        setTimeout(function () {
            i.clk = i.clk_x = i.clk_y = null
        }, 100)
    }
    function a() {
        if (e.fn.ajaxSubmit.debug) {
            var t = '[jquery.form] ' + Array.prototype.join.call(arguments, '')
            window.console && window.console.log
                ? window.console.log(t)
                : window.opera && window.opera.postError && window.opera.postError(t)
        }
    }
    var n = {}
    ;(n.fileapi = void 0 !== e("<input type='file'/>").get(0).files),
        (n.formdata = void 0 !== window.FormData)
    var i = !!e.fn.prop
    ;(e.fn.attr2 = function () {
        if (!i) {
            return this.attr.apply(this, arguments)
        }
        var e = this.prop.apply(this, arguments)
        return (e && e.jquery) || 'string' == typeof e
            ? e
            : this.attr.apply(this, arguments)
    }),
        (e.fn.ajaxSubmit = function (t) {
            function r(r) {
                var a,
                    n,
                    i = e.param(r, t.traditional).split('&'),
                    o = i.length,
                    s = []
                for (a = 0; o > a; a++) {
                    ;(i[a] = i[a].replace(/\+/g, ' ')),
                        (n = i[a].split('=')),
                        s.push([decodeURIComponent(n[0]), decodeURIComponent(n[1])])
                }
                return s
            }
            function o(a) {
                for (var n = new FormData(), i = 0; i < a.length; i++) {
                    n.append(a[i].name, a[i].value)
                }
                if (t.extraData) {
                    var o = r(t.extraData)
                    for (i = 0; i < o.length; i++) {
                        o[i] && n.append(o[i][0], o[i][1])
                    }
                }
                t.data = null
                var s = e.extend(!0, {}, e.ajaxSettings, t, {
                    contentType: !1,
                    processData: !1,
                    cache: !1,
                    type: u || 'POST',
                })
                t.uploadProgress &&
                (s.xhr = function () {
                    var r = e.ajaxSettings.xhr()
                    return (
                        r.upload &&
                        r.upload.addEventListener(
                            'progress',
                            function (e) {
                                var r = 0,
                                    a = e.loaded || e.position,
                                    n = e.total
                                e.lengthComputable && (r = Math.ceil((a / n) * 100)),
                                    t.uploadProgress(e, a, n, r)
                            },
                            !1
                        ),
                            r
                    )
                }),
                    (s.data = null)
                var c = s.beforeSend
                return (
                    (s.beforeSend = function (e, r) {
                        ;(r.data = t.formData ? t.formData : n), c && c.call(this, e, r)
                    }),
                        e.ajax(s)
                )
            }
            function s(r) {
                function n(e) {
                    var t = null
                    try {
                        e.contentWindow && (t = e.contentWindow.document)
                    } catch (r) {
                        a('cannot get iframe.contentWindow document: ' + r)
                    }
                    if (t) {
                        return t
                    }
                    try {
                        t = e.contentDocument ? e.contentDocument : e.document
                    } catch (r) {
                        a('cannot get iframe.contentDocument: ' + r), (t = e.document)
                    }
                    return t
                }
                function o() {
                    function t() {
                        try {
                            var e = n(g).readyState
                            a('state = ' + e),
                            e && 'uninitialized' == e.toLowerCase() && setTimeout(t, 50)
                        } catch (r) {
                            a('Server abort: ', r, ' (', r.name, ')'),
                                s(k),
                            j && clearTimeout(j),
                                (j = void 0)
                        }
                    }
                    var r = f.attr2('target'),
                        i = f.attr2('action'),
                        o = 'multipart/form-data',
                        c = f.attr('enctype') || f.attr('encoding') || o
                    w.setAttribute('target', p),
                    (!u || /post/i.test(u)) && w.setAttribute('method', 'POST'),
                    i != m.url && w.setAttribute('action', m.url),
                    m.skipEncodingOverride ||
                    (u && !/post/i.test(u)) ||
                    f.attr({
                        encoding: 'multipart/form-data',
                        enctype: 'multipart/form-data',
                    }),
                    m.timeout &&
                    (j = setTimeout(function () {
                        ;(T = !0), s(D)
                    }, m.timeout))
                    var l = []
                    try {
                        if (m.extraData) {
                            for (var d in m.extraData) {
                                m.extraData.hasOwnProperty(d) &&
                                l.push(
                                    e.isPlainObject(m.extraData[d]) &&
                                    m.extraData[d].hasOwnProperty('name') &&
                                    m.extraData[d].hasOwnProperty('value')
                                        ? e(
                                        '<input type="hidden" name="' +
                                        m.extraData[d].name +
                                        '">'
                                        )
                                            .val(m.extraData[d].value)
                                            .appendTo(w)[0]
                                        : e('<input type="hidden" name="' + d + '">')
                                            .val(m.extraData[d])
                                            .appendTo(w)[0]
                                )
                            }
                        }
                        m.iframeTarget || v.appendTo('body'),
                            g.attachEvent
                                ? g.attachEvent('onload', s)
                                : g.addEventListener('load', s, !1),
                            setTimeout(t, 15)
                        try {
                            w.submit()
                        } catch (h) {
                            var x = document.createElement('form').submit
                            x.apply(w)
                        }
                    } finally {
                        w.setAttribute('action', i),
                            w.setAttribute('enctype', c),
                            r ? w.setAttribute('target', r) : f.removeAttr('target'),
                            e(l).remove()
                    }
                }
                function s(t) {
                    if (!x.aborted && !F) {
                        if (
                            ((M = n(g)),
                            M || (a('cannot access response document'), (t = k)),
                            t === D && x)
                        ) {
                            return x.abort('timeout'), void S.reject(x, 'timeout')
                        }
                        if (t == k && x) {
                            return (
                                x.abort('server abort'),
                                    void S.reject(x, 'error', 'server abort')
                            )
                        }
                        if ((M && M.location.href != m.iframeSrc) || T) {
                            g.detachEvent
                                ? g.detachEvent('onload', s)
                                : g.removeEventListener('load', s, !1)
                            var r,
                                i = 'success'
                            try {
                                if (T) {
                                    throw 'timeout'
                                }
                                var o = 'xml' == m.dataType || M.XMLDocument || e.isXMLDoc(M)
                                if (
                                    (a('isXml=' + o),
                                    !o &&
                                    window.opera &&
                                    (null === M.body || !M.body.innerHTML) &&
                                    --O)
                                ) {
                                    return (
                                        a('requeing onLoad callback, DOM not available'),
                                            void setTimeout(s, 250)
                                    )
                                }
                                var u = M.body ? M.body : M.documentElement
                                ;(x.responseText = u ? u.innerHTML : null),
                                    (x.responseXML = M.XMLDocument ? M.XMLDocument : M),
                                o && (m.dataType = 'xml'),
                                    (x.getResponseHeader = function (e) {
                                        var t = { 'content-type': m.dataType }
                                        return t[e.toLowerCase()]
                                    }),
                                u &&
                                ((x.status = Number(u.getAttribute('status')) || x.status),
                                    (x.statusText =
                                        u.getAttribute('statusText') || x.statusText))
                                var c = (m.dataType || '').toLowerCase(),
                                    l = /(json|script|text)/.test(c)
                                if (l || m.textarea) {
                                    var f = M.getElementsByTagName('textarea')[0]
                                    if (f) {
                                        ;(x.responseText = f.value),
                                            (x.status = Number(f.getAttribute('status')) || x.status),
                                            (x.statusText =
                                                f.getAttribute('statusText') || x.statusText)
                                    } else {
                                        if (l) {
                                            var p = M.getElementsByTagName('pre')[0],
                                                h = M.getElementsByTagName('body')[0]
                                            p
                                                ? (x.responseText = p.textContent
                                                ? p.textContent
                                                : p.innerText)
                                                : h &&
                                                (x.responseText = h.textContent
                                                    ? h.textContent
                                                    : h.innerText)
                                        }
                                    }
                                } else {
                                    'xml' == c &&
                                    !x.responseXML &&
                                    x.responseText &&
                                    (x.responseXML = X(x.responseText))
                                }
                                try {
                                    E = _(x, c, m)
                                } catch (y) {
                                    ;(i = 'parsererror'), (x.error = r = y || i)
                                }
                            } catch (y) {
                                a('error caught: ', y), (i = 'error'), (x.error = r = y || i)
                            }
                            x.aborted && (a('upload aborted'), (i = null)),
                            x.status &&
                            (i =
                                (x.status >= 200 && x.status < 300) || 304 === x.status
                                    ? 'success'
                                    : 'error'),
                                'success' === i
                                    ? (m.success && m.success.call(m.context, E, 'success', x),
                                        S.resolve(x.responseText, 'success', x),
                                    d && e.event.trigger('ajaxSuccess', [x, m]))
                                    : i &&
                                    (void 0 === r && (r = x.statusText),
                                    m.error && m.error.call(m.context, x, i, r),
                                        S.reject(x, 'error', r),
                                    d && e.event.trigger('ajaxError', [x, m, r])),
                            d && e.event.trigger('ajaxComplete', [x, m]),
                            d && !--e.active && e.event.trigger('ajaxStop'),
                            m.complete && m.complete.call(m.context, x, i),
                                (F = !0),
                            m.timeout && clearTimeout(j),
                                setTimeout(function () {
                                    m.iframeTarget ? v.attr('src', m.iframeSrc) : v.remove(),
                                        (x.responseXML = null)
                                }, 100)
                        }
                    }
                }
                var c,
                    l,
                    m,
                    d,
                    p,
                    v,
                    g,
                    x,
                    y,
                    b,
                    T,
                    j,
                    w = f[0],
                    S = e.Deferred()
                if (
                    ((S.abort = function (e) {
                        x.abort(e)
                    }),
                        r)
                ) {
                    for (l = 0; l < h.length; l++) {
                        ;(c = e(h[l])),
                            i ? c.prop('disabled', !1) : c.removeAttr('disabled')
                    }
                }
                if (
                    ((m = e.extend(!0, {}, e.ajaxSettings, t)),
                        (m.context = m.context || m),
                        (p = 'jqFormIO' + new Date().getTime()),
                        m.iframeTarget
                            ? ((v = e(m.iframeTarget)),
                                (b = v.attr2('name')),
                                b ? (p = b) : v.attr2('name', p))
                            : ((v = e('<iframe name="' + p + '" src="' + m.iframeSrc + '" />')),
                                v.css({ position: 'absolute', top: '-1000px', left: '-1000px' })),
                        (g = v[0]),
                        (x = {
                            aborted: 0,
                            responseText: null,
                            responseXML: null,
                            status: 0,
                            statusText: 'n/a',
                            getAllResponseHeaders: function () {},
                            getResponseHeader: function () {},
                            setRequestHeader: function () {},
                            abort: function (t) {
                                var r = 'timeout' === t ? 'timeout' : 'aborted'
                                a('aborting upload... ' + r), (this.aborted = 1)
                                try {
                                    g.contentWindow.document.execCommand &&
                                    g.contentWindow.document.execCommand('Stop')
                                } catch (n) {}
                                v.attr('src', m.iframeSrc),
                                    (x.error = r),
                                m.error && m.error.call(m.context, x, r, t),
                                d && e.event.trigger('ajaxError', [x, m, r]),
                                m.complete && m.complete.call(m.context, x, r)
                            },
                        }),
                        (d = m.global),
                    d && 0 === e.active++ && e.event.trigger('ajaxStart'),
                    d && e.event.trigger('ajaxSend', [x, m]),
                    m.beforeSend && m.beforeSend.call(m.context, x, m) === !1)
                ) {
                    return m.global && e.active--, S.reject(), S
                }
                if (x.aborted) {
                    return S.reject(), S
                }
                ;(y = w.clk),
                y &&
                ((b = y.name),
                b &&
                !y.disabled &&
                ((m.extraData = m.extraData || {}),
                    (m.extraData[b] = y.value),
                'image' == y.type &&
                ((m.extraData[b + '.x'] = w.clk_x),
                    (m.extraData[b + '.y'] = w.clk_y))))
                var D = 1,
                    k = 2,
                    A = e('meta[name=csrf-token]').attr('content'),
                    L = e('meta[name=csrf-param]').attr('content')
                L && A && ((m.extraData = m.extraData || {}), (m.extraData[L] = A)),
                    m.forceSync ? o() : setTimeout(o, 10)
                var E,
                    M,
                    F,
                    O = 50,
                    X =
                        e.parseXML ||
                        function (e, t) {
                            return (
                                window.ActiveXObject
                                    ? ((t = new ActiveXObject('Microsoft.XMLDOM')),
                                        (t.async = 'false'),
                                        t.loadXML(e))
                                    : (t = new DOMParser().parseFromString(e, 'text/xml')),
                                    t &&
                                    t.documentElement &&
                                    'parsererror' != t.documentElement.nodeName
                                        ? t
                                        : null
                            )
                        },
                    C =
                        e.parseJSON ||
                        function (e) {
                            return window.eval('(' + e + ')')
                        },
                    _ = function (t, r, a) {
                        var n = t.getResponseHeader('content-type') || '',
                            i = 'xml' === r || (!r && n.indexOf('xml') >= 0),
                            o = i ? t.responseXML : t.responseText
                        return (
                            i &&
                            'parsererror' === o.documentElement.nodeName &&
                            e.error &&
                            e.error('parsererror'),
                            a && a.dataFilter && (o = a.dataFilter(o, r)),
                            'string' == typeof o &&
                            ('json' === r || (!r && n.indexOf('json') >= 0)
                                ? (o = C(o))
                                : ('script' === r || (!r && n.indexOf('javascript') >= 0)) &&
                                e.globalEval(o)),
                                o
                        )
                    }
                return S
            }
            if (!this.length) {
                return (
                    a('ajaxSubmit: skipping submit process - no element selected'), this
                )
            }
            var u,
                c,
                l,
                f = this
            'function' == typeof t ? (t = { success: t }) : void 0 === t && (t = {}),
                (u = t.type || this.attr2('method')),
                (c = t.url || this.attr2('action')),
                (l = 'string' == typeof c ? e.trim(c) : ''),
                (l = l || window.location.href || ''),
            l && (l = (l.match(/^([^#]+)/) || [])[1]),
                (t = e.extend(
                    !0,
                    {
                        url: l,
                        success: e.ajaxSettings.success,
                        type: u || e.ajaxSettings.type,
                        iframeSrc: /^https/i.test(window.location.href || '')
                            ? 'javascript:false'
                            : 'about:blank',
                    },
                    t
                ))
            var m = {}
            if ((this.trigger('form-pre-serialize', [this, t, m]), m.veto)) {
                return (
                    a('ajaxSubmit: submit vetoed via form-pre-serialize trigger'), this
                )
            }
            if (t.beforeSerialize && t.beforeSerialize(this, t) === !1) {
                return (
                    a('ajaxSubmit: submit aborted via beforeSerialize callback'), this
                )
            }
            var d = t.traditional
            void 0 === d && (d = e.ajaxSettings.traditional)
            var p,
                h = [],
                v = this.formToArray(t.semantic, h)
            if (
                (t.data && ((t.extraData = t.data), (p = e.param(t.data, d))),
                t.beforeSubmit && t.beforeSubmit(v, this, t) === !1)
            ) {
                return a('ajaxSubmit: submit aborted via beforeSubmit callback'), this
            }
            if ((this.trigger('form-submit-validate', [v, this, t, m]), m.veto)) {
                return (
                    a('ajaxSubmit: submit vetoed via form-submit-validate trigger'), this
                )
            }
            var g = e.param(v, d)
            p && (g = g ? g + '&' + p : p),
                'GET' == t.type.toUpperCase()
                    ? ((t.url += (t.url.indexOf('?') >= 0 ? '&' : '?') + g),
                        (t.data = null))
                    : (t.data = g)
            var x = []
            if (
                (t.resetForm &&
                x.push(function () {
                    f.resetForm()
                }),
                t.clearForm &&
                x.push(function () {
                    f.clearForm(t.includeHidden)
                }),
                !t.dataType && t.target)
            ) {
                var y = t.success || function () {}
                x.push(function (r) {
                    var a = t.replaceTarget ? 'replaceWith' : 'html'
                    e(t.target)[a](r).each(y, arguments)
                })
            } else {
                t.success && x.push(t.success)
            }
            if (
                ((t.success = function (e, r, a) {
                    for (var n = t.context || this, i = 0, o = x.length; o > i; i++) {
                        x[i].apply(n, [e, r, a || f, f])
                    }
                }),
                    t.error)
            ) {
                var b = t.error
                t.error = function (e, r, a) {
                    var n = t.context || this
                    b.apply(n, [e, r, a, f])
                }
            }
            if (t.complete) {
                var T = t.complete
                t.complete = function (e, r) {
                    var a = t.context || this
                    T.apply(a, [e, r, f])
                }
            }
            var j = e('input[type=file]:enabled', this).filter(function () {
                    return '' !== e(this).val()
                }),
                w = j.length > 0,
                S = 'multipart/form-data',
                D = f.attr('enctype') == S || f.attr('encoding') == S,
                k = n.fileapi && n.formdata
            a('fileAPI :' + k)
            var A,
                L = (w || D) && !k
            t.iframe !== !1 && (t.iframe || L)
                ? t.closeKeepAlive
                ? e.get(t.closeKeepAlive, function () {
                    A = s(v)
                })
                : (A = s(v))
                : (A = (w || D) && k ? o(v) : e.ajax(t)),
                f.removeData('jqxhr').data('jqxhr', A)
            for (var E = 0; E < h.length; E++) {
                h[E] = null
            }
            return this.trigger('form-submit-notify', [this, t]), this
        }),
        (e.fn.ajaxForm = function (n) {
            if (
                ((n = n || {}),
                    (n.delegation = n.delegation && e.isFunction(e.fn.on)),
                !n.delegation && 0 === this.length)
            ) {
                var i = { s: this.selector, c: this.context }
                return !e.isReady && i.s
                    ? (a('DOM not ready, queuing ajaxForm'),
                        e(function () {
                            e(i.s, i.c).ajaxForm(n)
                        }),
                        this)
                    : (a(
                        'terminating; zero elements found by selector' +
                        (e.isReady ? '' : ' (DOM not ready)')
                    ),
                        this)
            }
            return n.delegation
                ? (e(document)
                    .off('submit.form-plugin', this.selector, t)
                    .off('click.form-plugin', this.selector, r)
                    .on('submit.form-plugin', this.selector, n, t)
                    .on('click.form-plugin', this.selector, n, r),
                    this)
                : this.ajaxFormUnbind()
                    .bind('submit.form-plugin', n, t)
                    .bind('click.form-plugin', n, r)
        }),
        (e.fn.ajaxFormUnbind = function () {
            return this.unbind('submit.form-plugin click.form-plugin')
        }),
        (e.fn.formToArray = function (t, r) {
            var a = []
            if (0 === this.length) {
                return a
            }
            var i,
                o = this[0],
                s = this.attr('id'),
                u = t ? o.getElementsByTagName('*') : o.elements
            if (
                (u && !/MSIE [678]/.test(navigator.userAgent) && (u = e(u).get()),
                s &&
                ((i = e(':input[form="' + s + '"]').get()),
                i.length && (u = (u || []).concat(i))),
                !u || !u.length)
            ) {
                return a
            }
            var c, l, f, m, d, p, h
            for (c = 0, p = u.length; p > c; c++) {
                if (((d = u[c]), (f = d.name), f && !d.disabled)) {
                    if (t && o.clk && 'image' == d.type) {
                        o.clk == d &&
                        (a.push({ name: f, value: e(d).val(), type: d.type }),
                            a.push(
                                { name: f + '.x', value: o.clk_x },
                                { name: f + '.y', value: o.clk_y }
                            ))
                    } else {
                        if (((m = e.fieldValue(d, !0)), m && m.constructor == Array)) {
                            for (r && r.push(d), l = 0, h = m.length; h > l; l++) {
                                a.push({ name: f, value: m[l] })
                            }
                        } else {
                            if (n.fileapi && 'file' == d.type) {
                                r && r.push(d)
                                var v = d.files
                                if (v.length) {
                                    for (l = 0; l < v.length; l++) {
                                        a.push({ name: f, value: v[l], type: d.type })
                                    }
                                } else {
                                    a.push({ name: f, value: '', type: d.type })
                                }
                            } else {
                                null !== m &&
                                'undefined' != typeof m &&
                                (r && r.push(d),
                                    a.push({
                                        name: f,
                                        value: m,
                                        type: d.type,
                                        required: d.required,
                                    }))
                            }
                        }
                    }
                }
            }
            if (!t && o.clk) {
                var g = e(o.clk),
                    x = g[0]
                ;(f = x.name),
                f &&
                !x.disabled &&
                'image' == x.type &&
                (a.push({ name: f, value: g.val() }),
                    a.push(
                        { name: f + '.x', value: o.clk_x },
                        { name: f + '.y', value: o.clk_y }
                    ))
            }
            return a
        }),
        (e.fn.formSerialize = function (t) {
            return e.param(this.formToArray(t))
        }),
        (e.fn.fieldSerialize = function (t) {
            var r = []
            return (
                this.each(function () {
                    var a = this.name
                    if (a) {
                        var n = e.fieldValue(this, t)
                        if (n && n.constructor == Array) {
                            for (var i = 0, o = n.length; o > i; i++) {
                                r.push({ name: a, value: n[i] })
                            }
                        } else {
                            null !== n &&
                            'undefined' != typeof n &&
                            r.push({ name: this.name, value: n })
                        }
                    }
                }),
                    e.param(r)
            )
        }),
        (e.fn.fieldValue = function (t) {
            for (var r = [], a = 0, n = this.length; n > a; a++) {
                var i = this[a],
                    o = e.fieldValue(i, t)
                null === o ||
                'undefined' == typeof o ||
                (o.constructor == Array && !o.length) ||
                (o.constructor == Array ? e.merge(r, o) : r.push(o))
            }
            return r
        }),
        (e.fieldValue = function (t, r) {
            var a = t.name,
                n = t.type,
                i = t.tagName.toLowerCase()
            if (
                (void 0 === r && (r = !0),
                r &&
                (!a ||
                    t.disabled ||
                    'reset' == n ||
                    'button' == n ||
                    (('checkbox' == n || 'radio' == n) && !t.checked) ||
                    (('submit' == n || 'image' == n) && t.form && t.form.clk != t) ||
                    ('select' == i && -1 == t.selectedIndex)))
            ) {
                return null
            }
            if ('select' == i) {
                var o = t.selectedIndex
                if (0 > o) {
                    return null
                }
                for (
                    var s = [],
                        u = t.options,
                        c = 'select-one' == n,
                        l = c ? o + 1 : u.length,
                        f = c ? o : 0;
                    l > f;
                    f++
                ) {
                    var m = u[f]
                    if (m.selected) {
                        var d = m.value
                        if (
                            (d ||
                            (d =
                                m.attributes &&
                                m.attributes.value &&
                                !m.attributes.value.specified
                                    ? m.text
                                    : m.value),
                                c)
                        ) {
                            return d
                        }
                        s.push(d)
                    }
                }
                return s
            }
            return e(t).val()
        }),
        (e.fn.clearForm = function (t) {
            return this.each(function () {
                e('input,select,textarea', this).clearFields(t)
            })
        }),
        (e.fn.clearFields = e.fn.clearInputs = function (t) {
            var r = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i
            return this.each(function () {
                var a = this.type,
                    n = this.tagName.toLowerCase()
                r.test(a) || 'textarea' == n
                    ? (this.value = '')
                    : 'checkbox' == a || 'radio' == a
                    ? (this.checked = !1)
                    : 'select' == n
                        ? (this.selectedIndex = -1)
                        : 'file' == a
                            ? /MSIE/.test(navigator.userAgent)
                                ? e(this).replaceWith(e(this).clone(!0))
                                : e(this).val('')
                            : t &&
                            ((t === !0 && /hidden/.test(a)) ||
                                ('string' == typeof t && e(this).is(t))) &&
                            (this.value = '')
            })
        }),
        (e.fn.resetForm = function () {
            return this.each(function () {
                ;('function' == typeof this.reset ||
                    ('object' == typeof this.reset && !this.reset.nodeType)) &&
                this.reset()
            })
        }),
        (e.fn.enable = function (e) {
            return (
                void 0 === e && (e = !0),
                    this.each(function () {
                        this.disabled = !e
                    })
            )
        }),
        (e.fn.selected = function (t) {
            return (
                void 0 === t && (t = !0),
                    this.each(function () {
                        var r = this.type
                        if ('checkbox' == r || 'radio' == r) {
                            this.checked = t
                        } else {
                            if ('option' == this.tagName.toLowerCase()) {
                                var a = e(this).parent('select')
                                t &&
                                a[0] &&
                                'select-one' == a[0].type &&
                                a.find('option').selected(!1),
                                    (this.selected = t)
                            }
                        }
                    })
            )
        }),
        (e.fn.ajaxSubmit.debug = !1)
})
if (!js.ie) {
    !(function e(b, g, d) {
        function a(k, i) {
            if (!g[k]) {
                if (!b[k]) {
                    var m = 'function' == typeof require && require
                    if (!i && m) {
                        return m(k, !0)
                    }
                    if (f) {
                        return f(k, !0)
                    }
                    var h = new Error("Cannot find module '" + k + "'")
                    throw ((h.code = 'MODULE_NOT_FOUND'), h)
                }
                var j = (g[k] = { exports: {} })
                b[k][0].call(
                    j.exports,
                    function (l) {
                        var o = b[k][1][l]
                        return a(o ? o : l)
                    },
                    j,
                    j.exports,
                    e,
                    b,
                    g,
                    d
                )
            }
            return g[k].exports
        }
        for (
            var f = 'function' == typeof require && require, c = 0;
            c < d.length;
            c++
        ) {
            a(d[c])
        }
        return a
    })(
        {
            1: [
                function (b, a) {
                    !(function () {
                        function h(r, x) {
                            function q(l, i) {
                                return function () {
                                    return l.apply(i, arguments)
                                }
                            }
                            var v
                            if (
                                ((x = x || {}),
                                    (this.trackingClick = !1),
                                    (this.trackingClickStart = 0),
                                    (this.targetElement = null),
                                    (this.touchStartX = 0),
                                    (this.touchStartY = 0),
                                    (this.lastTouchIdentifier = 0),
                                    (this.touchBoundary = x.touchBoundary || 10),
                                    (this.layer = r),
                                    (this.tapDelay = x.tapDelay || 200),
                                    (this.tapTimeout = x.tapTimeout || 700),
                                    !h.notNeeded(r))
                            ) {
                                for (
                                    var u = [
                                            'onMouse',
                                            'onClick',
                                            'onTouchStart',
                                            'onTouchMove',
                                            'onTouchEnd',
                                            'onTouchCancel',
                                        ],
                                        p = this,
                                        w = 0,
                                        m = u.length;
                                    m > w;
                                    w++
                                ) {
                                    p[u[w]] = q(p[u[w]], p)
                                }
                                g &&
                                (r.addEventListener('mouseover', this.onMouse, !0),
                                    r.addEventListener('mousedown', this.onMouse, !0),
                                    r.addEventListener('mouseup', this.onMouse, !0)),
                                    r.addEventListener('click', this.onClick, !0),
                                    r.addEventListener('touchstart', this.onTouchStart, !1),
                                    r.addEventListener('touchmove', this.onTouchMove, !1),
                                    r.addEventListener('touchend', this.onTouchEnd, !1),
                                    r.addEventListener('touchcancel', this.onTouchCancel, !1),
                                Event.prototype.stopImmediatePropagation ||
                                ((r.removeEventListener = function (s, t, o) {
                                    var l = Node.prototype.removeEventListener
                                    'click' === s
                                        ? l.call(r, s, t.hijacked || t, o)
                                        : l.call(r, s, t, o)
                                }),
                                    (r.addEventListener = function (s, t, o) {
                                        var l = Node.prototype.addEventListener
                                        'click' === s
                                            ? l.call(
                                            r,
                                            s,
                                            t.hijacked ||
                                            (t.hijacked = function (i) {
                                                i.propagationStopped || t(i)
                                            }),
                                            o
                                            )
                                            : l.call(r, s, t, o)
                                    })),
                                'function' == typeof r.onclick &&
                                ((v = r.onclick),
                                    r.addEventListener(
                                        'click',
                                        function (i) {
                                            v(i)
                                        },
                                        !1
                                    ),
                                    (r.onclick = null))
                            }
                        }
                        var k = navigator.userAgent.indexOf('Windows Phone') >= 0,
                            g = navigator.userAgent.indexOf('Android') > 0 && !k,
                            d = /iP(ad|hone|od)/.test(navigator.userAgent) && !k,
                            j = d && /OS 4_\d(_\d)?/.test(navigator.userAgent),
                            f = d && /OS [6-7]_\d/.test(navigator.userAgent),
                            c = navigator.userAgent.indexOf('BB10') > 0
                        ;(h.prototype.needsClick = function (i) {
                            switch (i.nodeName.toLowerCase()) {
                                case 'button':
                                case 'select':
                                case 'textarea':
                                    if (i.disabled) {
                                        return !0
                                    }
                                    break
                                case 'input':
                                    if ((d && 'file' === i.type) || i.disabled) {
                                        return !0
                                    }
                                    break
                                case 'label':
                                case 'iframe':
                                case 'video':
                                    return !0
                            }
                            return /\bneedsclick\b/.test(i.className)
                        }),
                            (h.prototype.needsFocus = function (i) {
                                switch (i.nodeName.toLowerCase()) {
                                    case 'textarea':
                                        return !0
                                    case 'select':
                                        return !g
                                    case 'input':
                                        switch (i.type) {
                                            case 'button':
                                            case 'checkbox':
                                            case 'file':
                                            case 'image':
                                            case 'radio':
                                            case 'submit':
                                                return !1
                                        }
                                        return !i.disabled && !i.readOnly
                                    default:
                                        return /\bneedsfocus\b/.test(i.className)
                                }
                            }),
                            (h.prototype.sendClick = function (m, i) {
                                var o, l
                                document.activeElement &&
                                document.activeElement !== m &&
                                document.activeElement.blur(),
                                    (l = i.changedTouches[0]),
                                    (o = document.createEvent('MouseEvents')),
                                    o.initMouseEvent(
                                        this.determineEventType(m),
                                        !0,
                                        !0,
                                        window,
                                        1,
                                        l.screenX,
                                        l.screenY,
                                        l.clientX,
                                        l.clientY,
                                        !1,
                                        !1,
                                        !1,
                                        !1,
                                        0,
                                        null
                                    ),
                                    (o.forwardedTouchEvent = !0),
                                    m.dispatchEvent(o)
                            }),
                            (h.prototype.determineEventType = function (i) {
                                return g && 'select' === i.tagName.toLowerCase()
                                    ? 'mousedown'
                                    : 'click'
                            }),
                            (h.prototype.focus = function (l) {
                                var i
                                d &&
                                l.setSelectionRange &&
                                0 !== l.type.indexOf('date') &&
                                'time' !== l.type &&
                                'month' !== l.type
                                    ? ((i = l.value.length), l.setSelectionRange(i, i))
                                    : l.focus()
                            }),
                            (h.prototype.updateScrollParent = function (l) {
                                var i, m
                                if (((i = l.fastClickScrollParent), !i || !i.contains(l))) {
                                    m = l
                                    do {
                                        if (m.scrollHeight > m.offsetHeight) {
                                            ;(i = m), (l.fastClickScrollParent = m)
                                            break
                                        }
                                        m = m.parentElement
                                    } while (m)
                                }
                                i && (i.fastClickLastScrollTop = i.scrollTop)
                            }),
                            (h.prototype.getTargetElementFromEventTarget = function (i) {
                                return i.nodeType === Node.TEXT_NODE ? i.parentNode : i
                            }),
                            (h.prototype.onTouchStart = function (m) {
                                var i, o, l
                                if (m.targetTouches.length > 1) {
                                    return !0
                                }
                                if (
                                    ((i = this.getTargetElementFromEventTarget(m.target)),
                                        (o = m.targetTouches[0]),
                                        d)
                                ) {
                                    if (
                                        ((l = window.getSelection()),
                                        l.rangeCount && !l.isCollapsed)
                                    ) {
                                        return !0
                                    }
                                    if (!j) {
                                        if (
                                            o.identifier &&
                                            o.identifier === this.lastTouchIdentifier
                                        ) {
                                            return m.preventDefault(), !1
                                        }
                                        ;(this.lastTouchIdentifier = o.identifier),
                                            this.updateScrollParent(i)
                                    }
                                }
                                return (
                                    (this.trackingClick = !0),
                                        (this.trackingClickStart = m.timeStamp),
                                        (this.targetElement = i),
                                        (this.touchStartX = o.pageX),
                                        (this.touchStartY = o.pageY),
                                    m.timeStamp - this.lastClickTime < this.tapDelay &&
                                    m.preventDefault(),
                                        !0
                                )
                            }),
                            (h.prototype.touchHasMoved = function (l) {
                                var i = l.changedTouches[0],
                                    m = this.touchBoundary
                                return Math.abs(i.pageX - this.touchStartX) > m ||
                                Math.abs(i.pageY - this.touchStartY) > m
                                    ? !0
                                    : !1
                            }),
                            (h.prototype.onTouchMove = function (i) {
                                return this.trackingClick
                                    ? ((this.targetElement !==
                                        this.getTargetElementFromEventTarget(i.target) ||
                                        this.touchHasMoved(i)) &&
                                    ((this.trackingClick = !1), (this.targetElement = null)),
                                        !0)
                                    : !0
                            }),
                            (h.prototype.findControl = function (i) {
                                return void 0 !== i.control
                                    ? i.control
                                    : i.htmlFor
                                        ? document.getElementById(i.htmlFor)
                                        : i.querySelector(
                                            'button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'
                                        )
                            }),
                            (h.prototype.onTouchEnd = function (q) {
                                var p,
                                    s,
                                    m,
                                    r,
                                    i,
                                    o = this.targetElement
                                if (!this.trackingClick) {
                                    return !0
                                }
                                if (q.timeStamp - this.lastClickTime < this.tapDelay) {
                                    return (this.cancelNextClick = !0), !0
                                }
                                if (q.timeStamp - this.trackingClickStart > this.tapTimeout) {
                                    return !0
                                }
                                if (
                                    ((this.cancelNextClick = !1),
                                        (this.lastClickTime = q.timeStamp),
                                        (s = this.trackingClickStart),
                                        (this.trackingClick = !1),
                                        (this.trackingClickStart = 0),
                                    f &&
                                    ((i = q.changedTouches[0]),
                                        (o =
                                            document.elementFromPoint(
                                                i.pageX - window.pageXOffset,
                                                i.pageY - window.pageYOffset
                                            ) || o),
                                        (o.fastClickScrollParent = this.targetElement.fastClickScrollParent)),
                                        (m = o.tagName.toLowerCase()),
                                    'label' === m)
                                ) {
                                    if ((p = this.findControl(o))) {
                                        if ((this.focus(o), g)) {
                                            return !1
                                        }
                                        o = p
                                    }
                                } else {
                                    if (this.needsFocus(o)) {
                                        return q.timeStamp - s > 100 ||
                                        (d && window.top !== window && 'input' === m)
                                            ? ((this.targetElement = null), !1)
                                            : (this.focus(o),
                                                this.sendClick(o, q),
                                            (d && 'select' === m) ||
                                            ((this.targetElement = null), q.preventDefault()),
                                                !1)
                                    }
                                }
                                return d &&
                                !j &&
                                ((r = o.fastClickScrollParent),
                                r && r.fastClickLastScrollTop !== r.scrollTop)
                                    ? !0
                                    : (this.needsClick(o) ||
                                    (q.preventDefault(), this.sendClick(o, q)),
                                        !1)
                            }),
                            (h.prototype.onTouchCancel = function () {
                                ;(this.trackingClick = !1), (this.targetElement = null)
                            }),
                            (h.prototype.onMouse = function (i) {
                                return this.targetElement
                                    ? i.forwardedTouchEvent
                                        ? !0
                                        : i.cancelable &&
                                        (!this.needsClick(this.targetElement) ||
                                            this.cancelNextClick)
                                            ? (i.stopImmediatePropagation
                                                ? i.stopImmediatePropagation()
                                                : (i.propagationStopped = !0),
                                                i.stopPropagation(),
                                                i.preventDefault(),
                                                !1)
                                            : !0
                                    : !0
                            }),
                            (h.prototype.onClick = function (l) {
                                var i
                                return this.trackingClick
                                    ? ((this.targetElement = null), (this.trackingClick = !1), !0)
                                    : 'submit' === l.target.type && 0 === l.detail
                                        ? !0
                                        : ((i = this.onMouse(l)), i || (this.targetElement = null), i)
                            }),
                            (h.prototype.destroy = function () {
                                var i = this.layer
                                g &&
                                (i.removeEventListener('mouseover', this.onMouse, !0),
                                    i.removeEventListener('mousedown', this.onMouse, !0),
                                    i.removeEventListener('mouseup', this.onMouse, !0)),
                                    i.removeEventListener('click', this.onClick, !0),
                                    i.removeEventListener('touchstart', this.onTouchStart, !1),
                                    i.removeEventListener('touchmove', this.onTouchMove, !1),
                                    i.removeEventListener('touchend', this.onTouchEnd, !1),
                                    i.removeEventListener('touchcancel', this.onTouchCancel, !1)
                            }),
                            (h.notNeeded = function (p) {
                                var m, r, l, q
                                if ('undefined' == typeof window.ontouchstart) {
                                    return !0
                                }
                                if (
                                    (r = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [
                                        ,
                                        0,
                                    ])[1])
                                ) {
                                    if (!g) {
                                        return !0
                                    }
                                    if ((m = document.querySelector('meta[name=viewport]'))) {
                                        if (-1 !== m.content.indexOf('user-scalable=no')) {
                                            return !0
                                        }
                                        if (
                                            r > 31 &&
                                            document.documentElement.scrollWidth <= window.outerWidth
                                        ) {
                                            return !0
                                        }
                                    }
                                }
                                if (
                                    c &&
                                    ((l = navigator.userAgent.match(
                                        /Version\/([0-9]*)\.([0-9]*)/
                                    )),
                                    l[1] >= 10 &&
                                    l[2] >= 3 &&
                                    (m = document.querySelector('meta[name=viewport]')))
                                ) {
                                    if (-1 !== m.content.indexOf('user-scalable=no')) {
                                        return !0
                                    }
                                    if (
                                        document.documentElement.scrollWidth <= window.outerWidth
                                    ) {
                                        return !0
                                    }
                                }
                                return 'none' === p.style.msTouchAction ||
                                'manipulation' === p.style.touchAction
                                    ? !0
                                    : ((q = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [
                                        ,
                                        0,
                                    ])[1]),
                                        q >= 27 &&
                                        ((m = document.querySelector('meta[name=viewport]')),
                                        m &&
                                        (-1 !== m.content.indexOf('user-scalable=no') ||
                                            document.documentElement.scrollWidth <=
                                            window.outerWidth))
                                            ? !0
                                            : 'none' === p.style.touchAction ||
                                            'manipulation' === p.style.touchAction
                                            ? !0
                                            : !1)
                            }),
                            (h.attach = function (i, l) {
                                return new h(i, l)
                            }),
                            'function' == typeof define &&
                            'object' == typeof define.amd &&
                            define.amd
                                ? define(function () {
                                    return h
                                })
                                : 'undefined' != typeof a && a.exports
                                ? ((a.exports = h.attach), (a.exports.FastClick = h))
                                : (window.FastClick = h)
                    })()
                },
                {},
            ],
            2: [
                function (a) {
                    window.Origami = {
                        fastclick: a('./bower_components/fastclick/lib/fastclick.js'),
                    }
                },
                { './bower_components/fastclick/lib/fastclick.js': 1 },
            ],
        },
        {},
        [2]
    )
    ;(function () {
        function a() {
            document.dispatchEvent(new CustomEvent('o.load'))
        }
        document.addEventListener('load', a)
        if (document.readyState === 'ready') {
            a()
        }
    })()
    ;(function () {
        function a() {
            document.dispatchEvent(new CustomEvent('o.DOMContentLoaded'))
        }
        document.addEventListener('DOMContentLoaded', a)
        if (document.readyState === 'interactive') {
            a()
        }
    })()
}
!(function (a, c) {
    var b = a()
    ;(a.fn.dropdownHover = function (d) {
        return 'ontouchstart' in document
            ? this
            : ((b = b.add(this.parent())),
                this.each(function () {
                    function f() {
                        m.parents('.navbar').find('.navbar-toggle').is(':visible') ||
                        (c.clearTimeout(o),
                            c.clearTimeout(j),
                            (j = c.setTimeout(function () {
                                b.find(':focus').blur(),
                                p.instantlyCloseOthers === !0 && b.removeClass('open'),
                                    c.clearTimeout(j),
                                    m.attr('aria-expanded', 'true'),
                                    t.addClass('open'),
                                    m.trigger(k)
                            }, p.hoverDelay)))
                    }
                    var o,
                        j,
                        m = a(this),
                        t = m.parent(),
                        q = { delay: 500, hoverDelay: 0, instantlyCloseOthers: !0 },
                        g = {
                            delay: a(this).data('delay'),
                            hoverDelay: a(this).data('hover-delay'),
                            instantlyCloseOthers: a(this).data('close-others'),
                        },
                        k = 'show.bs.dropdown',
                        n = 'hide.bs.dropdown',
                        p = a.extend(!0, {}, q, d, g)
                    t.hover(
                        function (h) {
                            return t.hasClass('open') || m.is(h.target) ? void f(h) : !0
                        },
                        function () {
                            c.clearTimeout(j),
                                (o = c.setTimeout(function () {
                                    m.attr('aria-expanded', 'false'),
                                        t.removeClass('open'),
                                        m.trigger(n)
                                }, p.delay))
                        }
                    ),
                        m.hover(function (h) {
                            return t.hasClass('open') || t.is(h.target) ? void f(h) : !0
                        }),
                        t.find('.dropdown-submenu').each(function () {
                            var i,
                                h = a(this)
                            h.hover(
                                function () {
                                    c.clearTimeout(i),
                                        h.children('.dropdown-menu').show(),
                                        h.siblings().children('.dropdown-menu').hide()
                                },
                                function () {
                                    var l = h.children('.dropdown-menu')
                                    i = c.setTimeout(function () {
                                        l.hide()
                                    }, p.delay)
                                }
                            )
                        })
                }))
    }),
        a(document).ready(function () {
            a('[data-hover="dropdown"]').dropdownHover()
        })
})(jQuery, window)
!(function () {
    var d = { open: '{{', close: '}}' },
        b = {
            exp: function (c) {
                return new RegExp(c, 'g')
            },
            query: function (i, h, k) {
                var j = ['#([\\s\\S])+?', '([^{#}])*?'][i || 0]
                return g((h || '') + d.open + j + d.close + (k || ''))
            },
            escape: function (c) {
                return String(c || '')
                    .replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
                    .replace(/</g, '&lt;')
                    .replace(/>/g, '&gt;')
                    .replace(/'/g, '&#39;')
                    .replace(/"/g, '&quot;')
            },
            error: function (h, c) {
                var i = 'Laytpl Error：'
                return (
                    'object' == typeof console && console.error(i + h + '\n' + (c || '')),
                    i + h
                )
            },
        },
        g = b.exp,
        a = function (c) {
            this.tpl = c
        }
    ;(a.pt = a.prototype),
        (window.errors = 0),
        (a.pt.parse = function (k, q) {
            var n = this,
                m = k,
                i = g('^' + d.open + '#', ''),
                h = g(d.close + '$', '')
            ;(k = k
                .replace(/\s+|\r|\t|\n/g, ' ')
                .replace(g(d.open + '#'), d.open + '# ')
                .replace(g(d.close + '}'), '} ' + d.close)
                .replace(/\\/g, '\\\\')
                .replace(/(?="|')/g, '\\')
                .replace(b.query(), function (c) {
                    return (
                        (c = c.replace(i, '').replace(h, '')),
                        '";' + c.replace(/\\/g, '') + ';view+="'
                    )
                })
                .replace(b.query(1), function (l) {
                    var c = '"+('
                    return l.replace(/\s/g, '') === d.open + d.close
                        ? ''
                        : ((l = l.replace(g(d.open + '|' + d.close), '')),
                        /^=/.test(l) && ((l = l.replace(/^=/, '')), (c = '"+_escape_(')),
                        c + l.replace(/\\/g, '') + ')+"')
                })),
                (k = '"use strict";var view = "' + k + '";return view;')
            try {
                return (n.cache = k = new Function('d, _escape_', k)), k(q, b.escape)
            } catch (j) {
                return delete n.cache, b.error(j, m)
            }
        }),
        (a.pt.render = function (i, k) {
            var h,
                j = this
            return i
                ? ((h = j.cache ? j.cache(i, b.escape) : j.parse(j.tpl, i)),
                    console.log(),
                    k ? void k(h) : h)
                : b.error('no data')
        })
    var f = function (c) {
            return 'string' != typeof c ? b.error('Template not found') : new a(c)
        }
    ;(f.config = function (c) {
        c = c || {}
        for (var h in c) {
            d[h] = c[h]
        }
    }),
        (f.v = '1.2'),
        'function' == typeof define
            ? define(function () {
                return f
            })
            : 'undefined' != typeof exports
            ? (module.exports = f)
            : (window.laytpl = f)
})()
;(function () {
    this.Base64 = new a()
    function a() {
        _keyStr =
            'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
        this.encode = function (d) {
            var b = ''
            var m, k, h, l, j, g, f
            var c = 0
            d = _utf8_encode(d)
            while (c < d.length) {
                m = d.charCodeAt(c++)
                k = d.charCodeAt(c++)
                h = d.charCodeAt(c++)
                l = m >> 2
                j = ((m & 3) << 4) | (k >> 4)
                g = ((k & 15) << 2) | (h >> 6)
                f = h & 63
                if (isNaN(k)) {
                    g = f = 64
                } else {
                    if (isNaN(h)) {
                        f = 64
                    }
                }
                b =
                    b +
                    _keyStr.charAt(l) +
                    _keyStr.charAt(j) +
                    _keyStr.charAt(g) +
                    _keyStr.charAt(f)
            }
            return b
        }
        this.decode = function (d) {
            var b = ''
            var m, k, h
            var l, j, g, f
            var c = 0
            d = d.replace(/[^A-Za-z0-9\+\/\=]/g, '')
            while (c < d.length) {
                l = _keyStr.indexOf(d.charAt(c++))
                j = _keyStr.indexOf(d.charAt(c++))
                g = _keyStr.indexOf(d.charAt(c++))
                f = _keyStr.indexOf(d.charAt(c++))
                m = (l << 2) | (j >> 4)
                k = ((j & 15) << 4) | (g >> 2)
                h = ((g & 3) << 6) | f
                b = b + String.fromCharCode(m)
                if (g != 64) {
                    b = b + String.fromCharCode(k)
                }
                if (f != 64) {
                    b = b + String.fromCharCode(h)
                }
            }
            b = _utf8_decode(b)
            return b
        }
        _utf8_encode = function (d) {
            d = d.replace(/\r\n/g, '\n')
            var b = ''
            for (var g = 0; g < d.length; g++) {
                var f = d.charCodeAt(g)
                if (f < 128) {
                    b += String.fromCharCode(f)
                } else {
                    if (f > 127 && f < 2048) {
                        b += String.fromCharCode((f >> 6) | 192)
                        b += String.fromCharCode((f & 63) | 128)
                    } else {
                        b += String.fromCharCode((f >> 12) | 224)
                        b += String.fromCharCode(((f >> 6) & 63) | 128)
                        b += String.fromCharCode((f & 63) | 128)
                    }
                }
            }
            return b
        }
        _utf8_decode = function (b) {
            var d = ''
            var f = 0
            var g = (c1 = c2 = 0)
            while (f < b.length) {
                g = b.charCodeAt(f)
                if (g < 128) {
                    d += String.fromCharCode(g)
                    f++
                } else {
                    if (g > 191 && g < 224) {
                        c2 = b.charCodeAt(f + 1)
                        d += String.fromCharCode(((g & 31) << 6) | (c2 & 63))
                        f += 2
                    } else {
                        c2 = b.charCodeAt(f + 1)
                        c3 = b.charCodeAt(f + 2)
                        d += String.fromCharCode(
                            ((g & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)
                        )
                        f += 3
                    }
                }
            }
            return d
        }
    }
})()
